package com.unism.util;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ListUtil {
	  /**
	    * 用户dao层sql语句的拼接
	    * @param instanceIds
	    * @return
	    */
	 public static String parseListToString(List<String> Ids){
		   StringBuilder sql=new StringBuilder();
		   sql.append(" (");
		   for(int i=0;i<Ids.size();i++){
	       	sql.append("'");
	       	sql.append(Ids.get(i));
	       	sql.append("'");
	       	if(i !=Ids.size()-1){
	       		sql.append(" ,");
	       	}
	       }
	       sql.append(")");
	       
	       return sql.toString();
	   }
	 
	 public static String parseListToLong(List<Long> deviceIds){
		   StringBuilder sql=new StringBuilder();
		   sql.append(" (");
		   for(int i=0;i<deviceIds.size();i++){
	       	sql.append(deviceIds.get(i));
	       	
	       	
	       	if(i !=deviceIds.size()-1){
	       		sql.append(" ,");
	       	}
	       }
	       sql.append(")");
	       
	       return sql.toString();
	   }

	public static String parseListToInteger(List<Integer> types) {
		// TODO Auto-generated method stub
		 StringBuilder sql=new StringBuilder();
		   sql.append(" (");
		   for(int i=0;i<types.size();i++){
	       	sql.append(types.get(i));
	       	
	       	
	       	if(i !=types.size()-1){
	       		sql.append(",");
	       	}
	       }
	       sql.append(")");
	       
	       return sql.toString();
	}
	  
	/**
	 * 用户dao层sql语句的拼接（String []）
	 * 
	 * @author wujin wcj@unism.com.cn
	 * @param Ids
	 * @return
	 * @version 2016年12月14日上午11:51:56
	 */
	private static String toSql(Integer[] integers) {
		StringBuilder sql = new StringBuilder();
		sql.append(" ( ");
		for (int i = 0; i < integers.length; i++) {
			sql.append(integers[i]);
			sql.append(" , ");
		}
		sql = sql.deleteCharAt(sql.length() - 2);
		sql.append(" ) ");

		return sql.toString();
	}

	/**
	 * 用户dao层sql语句的拼接（String []）
	 * 
	 * @author wujin wcj@unism.com.cn
	 * @param Ids
	 * @return
	 * @version 2016年12月14日上午11:51:56
	 */
	private static String toSql(Long[] longs) {
		StringBuilder sql = new StringBuilder();
		sql.append(" ( ");
		for (int i = 0; i < longs.length; i++) {
			sql.append(longs[i]);
			sql.append(" , ");
		}
		sql = sql.deleteCharAt(sql.length() - 2);
		sql.append(" ) ");

		return sql.toString();
	}

	/**
	 * 用户dao层sql语句的拼接（String []）
	 * 
	 * @author wujin wcj@unism.com.cn
	 * @param Ids
	 * @return
	 * @version 2016年12月14日上午11:51:56
	 */
	private static String toSql(String[] Ids) {
		StringBuilder sql = new StringBuilder();
		sql.append(" ( ");
		for (int i = 0; i < Ids.length; i++) {
			sql.append("'");
			sql.append(Ids[i]);
			sql.append("' , ");
		}
		sql = sql.deleteCharAt(sql.length() - 2);
		sql.append(" ) ");

		return sql.toString();
	}

	/**
	 * @author wujin wcj@unism.com.cn
	 * @param list
	 * @return
	 * @version 2016年12月14日下午2:45:54
	 */
	private static String toSql(List<Object> list) {
		StringBuilder sql = new StringBuilder();
		sql.append(" ( ");
		if (list.size() > 0) {
			for (Object object : list) {
				if (list.get(0) instanceof String) {
					sql.append("'");
					sql.append(object.toString());
					sql.append("' , ");
				} else if (list.get(0) instanceof Long || list.get(0) instanceof Integer) {
					sql.append(object.toString());
					sql.append(" , ");
				}
			}
			sql = sql.deleteCharAt(sql.length() - 2);
			sql.append(" ) ");
			return sql.toString();
		} else {
			return " (  ) ";
		}
	}

	/**
	 * @author wujin wcj@unism.com.cn
	 * @param list
	 * @return
	 * @version 2016年12月14日下午12:06:44
	 */
	@SuppressWarnings("unchecked")
	public static String parseArrayListToString(Object object) {
		if (object instanceof String[]) {// 数据为数组
			return toSql((String[]) (object));
		} else if (object instanceof Long[]) {// 数据为链表
			return toSql((Long[]) (object));
		} else if (object instanceof Integer[]) {// 数据为链表
			return toSql((Integer[]) (object));
		} else if (object instanceof ArrayList<?>) {// 数据为链表
			return toSql((List<Object>) (object));
		}  else if (object instanceof LinkedList<?>) {// 数据为链表
			return toSql((LinkedList<Object>) (object));
		} else {// 数据为链表
			try {
				throw new Exception("数组转sql字符串出错");
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;
	}
	 
}
